Databases 是相關訊息的集合, 類似於 JSON, 但更表格化些。
那麼你有想到哪些 data 範例可以儲存在 database 中呢?
Database (資料庫) 為我們構建、處理和檢索大型資料集的方式做了很大的改進。 大多數軟體公司都會有一個專門從事資料庫管理的大型團隊。
Database 的優勢:
功能強大: 可以搜索、過濾資料、合併來自多個資源的資料。快速: 與 file/JSON 相比, 可以非常快速地搜尋以及過濾資料庫。大: 可以很合適地把資料庫大小擴展到非常大。安全: 用於操作失敗 (failure) 後恢復 (recovery) 的內建機制多用戶: Concurrency (並發性) 允許讓許多使用者同時查看/編輯資料。抽象 (abstract): 在儲存的資料和應用程式之間提供抽象層 —— 許多資料庫 program 都可以理解相同的 commands。將資料結構化為與共享屬性 (shared attributes) 有關聯的表格 (table)。
更詳細的解釋:
關係式資料庫是一種資料庫,用於儲存並存取相關的資料點。關聯式資料庫的基礎建立於關聯模型之上,以直接且直覺的方式於資料表上顯示資料。在關係式資料庫中,資料表中的每一列資料行都是一條記錄,並有唯一的ID,稱為索引鍵。資料表的資料列中存放著資料的屬性,每條記錄通常有一個屬性值,這樣就很容易建立資料點之間的關係。
參考資料: https://www.oracle.com/tw/database/what-is-a-relational-database/
從上圖 Excel 範例來看:
其實表格 (Tables) 可以做到像 Excel 工作表一樣呈現資料可視覺化, 只是具有不同的術語和更多的程序化功能。
表格範例:

搜索/更新資料庫的語言。專為資料訪問和資料管理而設計的特定領域語言(Domain-Specific Language), 而 HTML 其實也是一種 DSL。宣告式語言 (Declarative Language): 表達你要查找的資料, 而不是確切的查找方法。
statements in SQL!資料是什麼樣的?更改或訪問資料
[CREATE TABLE](https://www.w3schools.com/sql/sql_create_table.asp) 用於創建新表格。
CREATE TABLE table_name(
column1 datatype PRIMARY KEY,
column2 datatype,
column3 datatype,
.....
columnN datatype
);
.sql File Example:
-- comment in sqlite
CREATE TABLE Games(
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(106),
platform VARCHAR(32) NOT NULL,
release_year INTEGER NOT NULL,
genre VARCHAR(28),
publisher VARCHAR(50) NOT NULL,
developer VARCHAR(50),
rating VARCHAR(50)
);
SQL Type convert to SQLite Type
| Static SQL Type | SQLite Type |
|---|---|
| INT | INTEGER |
| VARCHAR(n) | TEXT |
| TINYINT | INTEGER |
| DATETIME | NUMERIC (包含: “Strings”, Dates, Booleans) |
| DOUBLE | REAL |
| TEXT | TEXT |
以下這些稱為 Constraints - 它們有條件地約束你可以在欄位中存入的值的類型。
SQLite AUTOINCREMENT is a keyword used for auto incrementing a value of a field in the table.
這邊提供兩個不錯的 Constraints 學習連結:
先下載完 DB Browser for SQLite 後, 我們可以新建一個資料庫檔案。
點選左上角的 New Database, 在選好資料庫檔案儲存路徑後, 為檔案命名完成。
建立完成後, 會跳出一個 Edit table definition 視窗, 我們可以在這邊新建 table (資料表)。定義完 table 名稱後, 點選下方的Add 允許我們增加資料表欄位。馬上來新增兩個欄位看看,

要將新 record 存入表中, 我們使用 INSERT INTO 關鍵字。
INSERT INTO Games(id,name,platform,release_year,genre,publisher,developer,rating)
VALUES (1,'Pokemon Red/Blue','GB','1996','Role-Playing','Nintendo','Game Frea k','E');
首先提供 table name, 然後提供要設置的列表(預設情況下它會設置所有欄位)。 遺漏的欄位將設置為 NULL, 除非它們設置了 AUTOINCREMENT。然後為每列欄位提供與指定的欄位名匹配的值。
在新建好的 table 點擊右鍵中的 Browse Table 可以瀏覽資料表的資訊

進來可以看到 table, 想要存入資料的話, 點選 GUI 中的 Insert a new record in the current table, 便可新增欄位。點選目標欄位, 並且在右邊的 Edit Databse Cell 中編輯想要存入的 data, 最後點選 Appply。

相反的, 如果想要刪除某個欄位, 選取想要刪除的欄位並點選 GUI 中的 Delete the current record。

